package com.sys.server.common.utils;

import org.springframework.util.DigestUtils;

import java.util.UUID;

/**
 * MD5工具类
 *
 * @author shanbingzhen
 * @date 2022-01-10 15:00
 */
public class MD5Util {

    /**
     * 生成盐值
     * uuid替换‘-’，截取前20位
     *
     * @return salt
     */
    public static String createSalt() {
        UUID uuid = UUID.randomUUID();
        return uuid.toString().replace("-", "").substring(0, 20);
    }

    /**
     * 根据密码和盐值MD5加密（使用SpringBoot自带的DigestUtils工具类）
     *
     * @param password 明文密码
     * @param salt 盐值
     * @return 加密后的密码
     */
    public static String createPwd(String password, String salt) {
        return DigestUtils.md5DigestAsHex((password+salt).getBytes());
    }

    /**
     * 用户登录密码匹配
     *
     * @param password 用户输入的明文密码
     * @param salt 该用户对应的盐值
     * @param pwdhash 该用户的密码
     * @return boolean
     */
    public static boolean matches(String password, String salt, String pwdhash) {
        return createPwd(password, salt).equals(pwdhash);
    }

}
